// 插件使用步骤：
// 1.定义插件 -> 提供install()方法
// 2.调用插件 -> 调用install ()方法
/*
vue2
 export default {
//  Vue构造函数
  install (Vue) {
    // 注册全局组件
    // 自定义全局指令
    // 挂载原型
    //自定义过滤器
  }
}
// Vue.use(插件对象) 调用时，会自动传入Vue实参
 */

// Vue3
// 导入组件
import Skeleton from './Skeleton'
import Slider from './Slider'
import More from './More'
import Bread from './Bread'
import BreadItem from './Bread/Item'
import InfiniteLoad from './InfiniteLoad'
import ImageView from './ImageView'
import City from './City'
import Numbox from './Numbox'
import Button from './Button'
import Message from './Message/index.vue'
import CheckBox from './CheckBox'

// 导入自定义指令
import { lazyLoad } from '@/directive'

export default {
  // app整个项目的应用实例
  install (app) {
    // 注册全局组件
    // 全局注册骨架屏组件
    app.component(Skeleton.name, Skeleton)
    // 全局注册轮播图组件
    app.component(Slider.name, Slider)
    // 全局注册获取更多组件
    app.component(More.name, More)
    // 全局注册面包屑组件
    app.component(Bread.name, Bread)
    // 全局注册面包屑子组件
    app.component(BreadItem.name, BreadItem)
    // 全局注册上拉无限加载组件
    app.component(InfiniteLoad.name, InfiniteLoad)
    // 全局注册商品图片组件
    app.component(ImageView.name, ImageView)
    // 全局注册城市选择组件
    app.component(City.name, City)
    // 全局注册计数组件
    app.component(Numbox.name, Numbox)
    // 全局注册按钮组件
    app.component(Button.name, Button)
    // 全局注册消息提示组件
    app.component(Message.name, Message)
    // 全局注册复选框组件
    app.component(CheckBox.name, CheckBox)

    // 自定义全局指令
    // 图片懒加载指令
    app.directive('lazyLoad', lazyLoad)
    // 挂载原型
  }
}

// 在mian.js注册插件（会自动给install()传入app实例）
// app.use(Components)
